#!/bin/bash

set -x
export NVM_DIR="$(cd ../.. && pwd)"

# an ambient value would send nvm-exec down its `NODE_VERSION` branch
unset NODE_VERSION

: nvm.sh
\. ../../nvm.sh

ORIG_PWD="$(pwd)"

cleanup() {
  cd "${ORIG_PWD}" 2>/dev/null || true
  rm -f .nvmrc
  [ -n "${TMP_DIR-}" ] && rm -rf "${TMP_DIR}"
}
die () { echo "$@" ; cleanup ; exit 1; }

NVM_TEST_VERSION=v0.42

HINT="nvm-exec: unable to select a node version
  Set \`NODE_VERSION\` (e.g. \`NODE_VERSION=default\`), or add an \`.nvmrc\` file."

# Write it to nvmrc
echo "$NVM_TEST_VERSION" > .nvmrc

OUTPUT="$(../../nvm-exec 2>&1)";
EXPECTED="Found '$(pwd)/.nvmrc' with version <${NVM_TEST_VERSION}>
N/A: version \"${NVM_TEST_VERSION}\" is not yet installed.

You need to run \`nvm install ${NVM_TEST_VERSION}\` to install and use it.
${HINT}";

# Skip install, we want to test the error message
[ "${EXPECTED}" = "${OUTPUT}" ] || die "expected >${EXPECTED}<, got >${OUTPUT}<"

rm -f .nvmrc

NVM_EXEC="$(cd ../.. && pwd)/nvm-exec"

# Run from a fresh, empty directory so no ambient .nvmrc above the test dir
# can satisfy the lookup and mask the hint.
TMP_DIR="$(mktemp -d)"
cd "${TMP_DIR}" || die "could not cd to temp dir"

OUTPUT="$("${NVM_EXEC}" node </dev/null 2>&1)";
EXIT_CODE=$?
EXPECTED="No version provided and no .nvmrc file found
${HINT}";

[ "${EXPECTED}" = "${OUTPUT}" ] || die "expected >${EXPECTED}<, got >${OUTPUT}<"
[ "${EXIT_CODE}" = 127 ] || die "expected exit code 127, got >${EXIT_CODE}<"

cleanup
